using System;
using System.Collections.Generic;
using System.Text;
using WozLib.UI.Ink.SketchProperties;

namespace WozLib.UI.Ink.SketchObjects
{
  public interface ISketchObject
  {
    long WozID
    {
      get;
      set;
    }

    // You should update your properties to reflec the actualy state of your underlying object
    // i.e if your current color property says Black, but your stroke actually had its color
    // changed to Red recently - change the color property to red
    void SyncProperties();

    // Set the property, but also make the corresponding change to the underlying object
    // i.e. if the color property is set on a stroke, actually change the drawing attributes
    void SetProperty(SketchProperty wozProperty);
    void SetProperty(IEnumerable<SketchProperty> wozProperties);

    // just return the specified property
    SketchProperty GetProperty(WozPropertyType wozPropertyType);

    // Return a copy of all your properties
    IEnumerable<SketchProperty> GetProperties();

    // Make sure you create the WozObject from the appropriate derived class
    // i.e. WozStroke creates a StrokeWozObject
    SketchObject GetWozObject();

    bool ShouldErase(System.Windows.Point pointRelativeToUie);
  }
}
